/**  
 * @Title:  JDKMeipo.java   
 * @Package Dongtai   
 * @Description:    TODO   
 * @author: hezhiqin     
 * @date:   2019年4月1日 下午4:33:25   
 */  
package Dongtai;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/**   
 * @ClassName:  JDKMeipo   
 * @Description:TODO(这里用一句话描述这个类的作用)   
 * @author: hezhiqin
 * @date:   2019年4月1日 下午4:33:25   
 *      
 */
public class JDKMeipo implements InvocationHandler {
	
	
	//被代理的对象，把引用给保存下来
	private Object target;
	
	public Object getInstance(Object target) throws Exception{
		this.target = target;
		Class<?> clazz = target.getClass();
		return Proxy.newProxyInstance(clazz.getClassLoader(),clazz.getInterfaces(),this);
	}

	/**    
	 * @param proxy 代理类代理的真实代理对象com.sun.proxy.$Proxy0
	 * @param method 我们所要调用某个对象真实的方法的Method对象
	 * @param args 指代代理对象方法传递的参数
	 * @return
	 * @throws Throwable   
	 * @see java.lang.reflect.InvocationHandler#invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])   
	 */
	
	@Override
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
		before();
		Object obj = method.invoke(this.target,args);
		after();
		return obj;
	}

	private void before(){
		
		System.out.println("我是媒婆：我要给你找对象，现在已经拿到你的需求");
		System.out.println("开始物色");
	}
	
	
	private void after(){
		System.out.println("如果合适的话，就准备办事");
	}
}
